package co.com.desarrollo.pedidos.dao.impl;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import co.com.desarrollo.pedidos.dao.DetallePedidoUsuarioDAO;
import co.com.desarrollo.pedidos.entities.DetallePedidoUsuario;

@Repository("detallePedidoUsuarioDAO")
public class JpaDetallePedidoUsuarioDAOImpl implements DetallePedidoUsuarioDAO {

	@PersistenceContext
	private EntityManager entityManager;
	
	@Transactional(readOnly = true)
	public List<DetallePedidoUsuario> findAll() {
		return entityManager.createQuery("from DetallePedidoUsuario",DetallePedidoUsuario.class).getResultList();
	}

	@Transactional(readOnly = true)
	public DetallePedidoUsuario findById(long detallePedidoId) {		
		return entityManager.find(DetallePedidoUsuario.class, detallePedidoId);
	}

	@Transactional
	public DetallePedidoUsuario store(DetallePedidoUsuario detallePedido) {
		return entityManager.merge(detallePedido);
	}

	@Transactional
	public void delete(long detallePedidoId) {
		entityManager.remove(entityManager.find(DetallePedidoUsuario.class, detallePedidoId));
	}

	@Transactional(readOnly = true)
	public List<DetallePedidoUsuario> findByPedidoUsuario(long pedidoUsuarioId) {
		return entityManager.createQuery("from DetallePedidoUsuario dpu where dpu.pedidoUsuario.idpedidoUsuario = '"+pedidoUsuarioId+"'", DetallePedidoUsuario.class).getResultList();
	}

	@Override
	public DetallePedidoUsuario findByPedidoUsuarioProducto(long pedidoUsuarioId, long productoId) {
		return entityManager.createQuery("from DetallePedidoUsuario dpu where dpu.pedidoUsuario.idpedidoUsuario = '"+pedidoUsuarioId+"' and dpu.producto.idproducto = '"+productoId+"' ", DetallePedidoUsuario.class).getSingleResult();
	}
}
